]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
workspacesView: Disable swipe tracker during window dragging
authorAlexander Mikhaylenko <exalm7659@gmail.com>
Tue, 28 Jan 2020 19:08:32 +0000 (00:08 +0500)
committerFlorian Müllner <florian.muellner@gmail.com>
Tue, 28 Jan 2020 22:08:48 +0000 (22:08 +0000)
Since a11f417cd0f9876b6e00731a6e39665d0103336f, both drag and scroll
gestures are added to Main.layoutManager.overviewGroup actor, while
previously drag gesture was added to Main.overview._backgroundGroup
instead. Since we cannot use 2 different actors for dragging and scrolling
anymore. just disable the swipe tracker while dragging a window.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/2151

js/ui/workspacesView.js

index 2dd1ae490902f4866058ae7c80b8015ef5429326..52ea5fdbf51865b22cbc6a42c1f0f55321f153d2 100644 (file)
@@ -426,7 +426,14 @@ class WorkspacesDisplay extends St.Widget {
         this._swipeTracker.connect('begin', this._switchWorkspaceBegin.bind(this));
         this._swipeTracker.connect('update', this._switchWorkspaceUpdate.bind(this));
         this._swipeTracker.connect('end', this._switchWorkspaceEnd.bind(this));
-        this.bind_property('mapped', this._swipeTracker, 'enabled', GObject.BindingFlags.SYNC_CREATE);
+        this.connect('notify::mapped', this._updateSwipeTracker.bind(this));
+
+        this._windowDragBeginId =
+            Main.overview.connect('window-drag-begin',
+                this._windowDragBegin.bind(this));
+        this._windowDragEndId =
+            Main.overview.connect('window-drag-begin',
+                this._windowDragEnd.bind(this));
 
         this._primaryIndex = Main.layoutManager.primaryIndex;
         this._workspacesViews = [];
@@ -443,6 +450,7 @@ class WorkspacesDisplay extends St.Widget {
         this._scrollTimeoutId = 0;
 
         this._fullGeometry = null;
+        this._inWindowDrag = false;
 
         this._gestureActive = false; // touch(pad) gestures
         this._canScroll = true; // limiting scrolling speed
@@ -470,6 +478,22 @@ class WorkspacesDisplay extends St.Widget {
 
         global.window_manager.disconnect(this._switchWorkspaceId);
         global.workspace_manager.disconnect(this._reorderWorkspacesdId);
+        Main.overview.disconnect(this._windowDragBeginId);
+        Main.overview.disconnect(this._windowDragEndId);
+    }
+
+    _windowDragBegin() {
+        this._inWindowDrag = true;
+        this._updateSwipeTracker();
+    }
+
+    _windowDragEnd() {
+        this._inWindowDrag = false;
+        this._updateSwipeTracker();
+    }
+
+    _updateSwipeTracker() {
+        this._swipeTracker.enabled = this.mapped && !this._inWindowDrag;
     }
 
     _workspacesReordered() {